아파치 톰캣
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
아파치 톰캣은 자바 서블릿, JavaServer Pages (JSP) 사양을 구현하는 오픈 소스 웹 컨테이너이다. Catalina, Coyote, Jasper, Cluster, High availability 등의 구성 요소로 이루어져 있으며, HTTP/1.1 및 HTTP/2 프로토콜을 지원한다. 톰캣은 자체 내장 웹 서버로 사용하거나 아파치 HTTP 서버와 같은 외부 웹 서버와 연동하여 사용될 수 있으며, 부하 분산 및 시스템 업그레이드를 위한 고가용성 기능을 제공한다. 톰캣은 다양한 버전으로 출시되었으며, 각 버전별로 지원하는 Java Servlet, JSP, Java 버전이 다르다. 톰캣은 제임스 던컨 데이비슨에 의해 개발되었으며, 아파치 톰EE는 톰캣에 자바 엔터프라이즈 기능을 추가한 버전이다.
더 읽어볼만한 페이지
- 자유 웹 서버 소프트웨어 - Nginx
Nginx는 이고르 시소예프가 개발한 웹 서버 소프트웨어로, 높은 성능과 안정성을 바탕으로 웹 서버, 리버스 프록시, 로드 밸런서 등으로 활용되며 대규모 트래픽 처리에 강점을 보이지만, F5 Networks 인수 후 포크 프로젝트가 등장하기도 했다. - 자유 웹 서버 소프트웨어 - 아파치 HTTP 서버
아파치 HTTP 서버는 아파치 소프트웨어 재단에서 관리하는 오픈 소스 웹 서버 소프트웨어로, 다양한 운영체제 지원, 모듈을 통한 기능 확장, 가상 호스팅 등의 기능을 제공하며 전 세계적으로 널리 사용된다. - 자바 플랫폼, 엔터프라이즈 에디션 - IBM 웹스피어
IBM 웹스피어는 IBM에서 출시한 기업용 소프트웨어 제품군 브랜드로, 다양한 애플리케이션 인프라, 비즈니스 프로세스 통합, 정보 통합 및 개발 도구를 포함한다. - 자바 플랫폼, 엔터프라이즈 에디션 - 자카르타 서버 페이지
자카르타 서버 페이지(JSP)는 웹 애플리케이션 개발에 사용되는 서버 측 스크립팅 기술로, 서블릿으로 변환되어 실행되고 HTML 형태로 결과를 반환하며, 지시어, 스크립틀릿, 표현식, 액션 등의 문법 요소, 표현 언어(EL), JSTL을 통해 동적인 웹 페이지를 구현하고 개발 편의성을 높였다. - 아파치 소프트웨어 재단 프로젝트 - 아파치 루씬
아파치 루씬은 더그 커팅이 개발한 오픈 소스 전문 검색 라이브러리이며, 텍스트 색인 및 검색 기능을 제공하여 웹 검색 엔진, 퍼지 검색, 추천 시스템 구현 등에 사용된다. - 아파치 소프트웨어 재단 프로젝트 - 아파치 하둡
아파치 하둡은 대용량 데이터를 분산 처리하기 위한 자바 기반의 오픈 소스 프레임워크로, HDFS, 맵리듀스, YARN 등의 모듈로 구성되어 클라우드 환경에서도 사용된다.
아파치 톰캣 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
![]() | |
개발자 | 아파치 소프트웨어 재단 |
최초 개발자 | 제임스 던칸 데이비슨 |
출시일 | 1999년 |
최신 안정화 버전 | 10.1.18 |
최신 안정화 버전 출시일 | 2023년 10월 6일 |
최신 프리뷰 버전 | 11.0.0-M13 |
최신 프리뷰 버전 출시일 | 2023년 10월 2일 |
상태 | 개발 중 |
플랫폼 | 자바 플랫폼 |
프로그래밍 언어 | 자바 |
종류 | 웹 컨테이너 HTTP 웹 서버 |
라이선스 | 아파치 라이선스 2.0 |
웹사이트 | 아파치 톰캣 공식 웹사이트 |
저장소 | 톰캣 저장소 |
2. 구성 요소
톰캣은 카탈리나(Catalina), 코요테(Coyote), 재스퍼(Jasper) 등의 핵심 구성 요소로 이루어져 있다.
- 카탈리나(Catalina): 서블릿 컨테이너 역할을 담당한다.
- 코요테(Coyote): HTTP 서버 역할을 수행한다.
- 재스퍼(Jasper): JSP 엔진이다. 톰캣 5 버전부터는 Jasper2를 사용한다.
2. 1. Catalina
Catalina는 톰캣의 서블릿 컨테이너이다. 썬 마이크로시스템즈의 서블릿 및 JSP 사양을 구현한다. 톰캣에서 Realm 요소는 해당 사용자에게 할당된 사용자 이름, 암호 및 역할(유닉스 그룹과 유사)의 "데이터베이스"를 나타낸다. Realm의 다양한 구현을 통해 Catalina는 해당 인증 정보가 이미 생성되고 유지 관리되는 환경에 통합된 다음 해당 정보를 사용하여 서블릿 사양에 설명된 대로 컨테이너 관리 보안을 구현할 수 있다.[1]2. 2. Coyote
Coyote는 웹 서버로서 HTTP 1.1 및 2 프로토콜을 지원하는 톰캣의 커넥터 구성 요소이다. 이를 통해 Java Servlet 또는 JSP 컨테이너인 Catalina가 일반 웹 서버처럼 작동하여 로컬 파일을 HTTP 문서로 제공할 수 있다.[2] Coyote는 특정 TCP 포트에서 서버로의 들어오는 연결을 수신하고, 요청을 처리하고 요청 클라이언트에 응답을 보내기 위해 톰캣 엔진으로 요청을 전달한다. 다른 Coyote 커넥터인 Coyote JK는 유사하게 수신하지만, 대신 JK 프로토콜을 사용하여 요청을 아파치와 같은 다른 웹 서버로 전달한다.[3]2. 3. Jasper
Jasper는 JSP 엔진으로, 톰캣의 JSP 엔진이다. Jasper는 JSP 파일을 파싱하여 서블릿으로 컴파일하고 자바 코드로 변환한다.[1] 런타임에 Jasper는 JSP 파일의 변경 사항을 감지하고 다시 컴파일하는 기능을 제공한다.[1]톰캣 5 버전부터 톰캣은 썬 마이크로시스템즈의 JSP 2.0 사양 구현체인 Jasper 2를 사용한다.[2] Jasper에서 Jasper 2로 업그레이드되면서 다음과 같은 주요 기능들이 추가되었다.[2]
- JSP 태그 라이브러리 풀링: JSP 파일의 각 태그 마크업은 태그 핸들러 클래스에 의해 처리된다. 태그 핸들러 클래스 객체는 전체 JSP 서블릿에서 풀링 및 재사용이 가능하다.
- 백그라운드 JSP 컴파일: 수정된 JSP 자바 코드를 다시 컴파일하는 동안에도 이전 버전은 서버 요청에 계속 사용할 수 있다. 이전 JSP 서블릿은 새 JSP 서블릿의 재컴파일이 완료되면 삭제된다.
- 포함된 페이지 변경 시 JSP 재컴파일: 페이지는 런타임에 JSP로 삽입되거나 포함될 수 있다. JSP는 JSP 파일 변경뿐만 아니라 포함된 페이지 변경 사항에 따라 다시 컴파일된다.
- JDT 자바 컴파일러: Jasper 2는 앤트 및 `javac` 대신 이클립스 JDT (Java Development Tools) 자바 컴파일러를 사용할 수 있다.
2. 4. Cluster (클러스터)
이 구성 요소는 대규모 애플리케이션을 관리하기 위해 추가되었다. 이는 여러 기술을 통해 구현할 수 있는 부하 분산에 사용된다. 클러스터링 지원에는 현재 JDK 버전 1.5 이상이 필요하다.2. 5. High availability (고가용성)
메인 서버가 메인 포트에서 업그레이드되는 동안 라이브 트래픽 요청을 다른 포트의 임시 서버로 전달하는 방식으로, 라이브 환경에 영향을 미치지 않고 시스템 업그레이드(예: 새로운 릴리스, 변경 요청)를 예약할 수 있도록 고가용성 기능이 추가되었다. 이는 트래픽이 많은 웹 애플리케이션에서 사용자 요청을 처리하는 데 매우 유용하다.[4]3. 웹 서버와의 연동
아파치 톰캣은 자체 내장된 웹 서버만으로도 시스템 구성이 가능하지만, 대규모 사용자가 이용하는 시스템의 경우 웹 서버와 연동하여 안정성을 높여야 한다. 아파치 HTTP 서버와의 연동에는 주로 mod_jk (1.3, 2.0 버전) 또는 mod_proxy_ajp (2.2 이후 버전) 모듈을 사용한다.[1]
아파치 톰캣은 안정적으로 동작하며 정적 콘텐츠를 처리하는 HTTP 서버로도 단독 사용이 가능하다. 또한, 톰캣 외 다른 HTTP 서버가 HTTP 요청을 받아 필요에 따라 서블릿 컨테이너에 요청을 전달하는 방식으로 HTTP 서버와 연동할 수도 있다. 그러나 다른 HTTP 서버와 커넥터를 연동하면 Advanced IO (코멧) 등 일부 기능을 사용할 수 없다. 예를 들어, 아파치 HTTP 서버와 커넥터 모듈을 통해 연동하는 경우, 아파치 톰캣은 mod_jk를 커넥터로 배포한다. 아파치 2.2 버전 이후부터는 mod_jk 대신 mod_proxy_ajp 모듈을 사용하는 방법도 있다.[2]
4. 버전별 지원 사양
톰캣은 각 버전별로 지원하는 Servlet, JSP, EL, WebSocket 등의 사양이 다르다.[5][35]
버전 | 출시일 | 비고 |
---|---|---|
3.0.x | 1999년 | 최초 릴리스. Sun Java Web Server 코드와 ASF를 통합하여 Servlet 2.2 및 JSP 1.1 사양 구현 |
3.3.2 | 2004-03-09 | 3.x 계열 최종 버전 |
4.1.31 | 2004-10-11 | |
4.1.40 | 2009-06-25 | 4.x 계열 최종 버전 |
5.0.0 | 2002-10-09 | |
5.0.30 | 2004-08-30 | 5.0 계열 최종 버전 |
5.5.0 | 2004-08-31 | |
5.5.36 | 2012-10-10 | 5.5 계열 최종 버전[36] |
6.0.0 | 2006-12-01 | Servlet 2.5, JSP 2.1, EL 2.1 사양을 지원하는 첫 번째 릴리스 |
6.0.10 | 2007-02-28 | 6.0 계열 첫 번째 안정 버전[37] |
6.0.53 | 2017-04-02 | 6.0 계열 최종 버전[38] |
7.0.0 beta | 2010-06-29 | Servlet 3.0, JSP 2.2, EL 2.2 및 WebSocket 사양을 지원하는 첫 번째 릴리스 |
7.0.6 | 2011-01-14 | 7.0 계열 첫 번째 안정 버전[39] |
7.0.109 | 2021-04-26 | 7.0 계열 최종 버전[40] |
8.0.0 | 2013-08-18 | Servlet 3.1 및 JSP 2.3 사양을 지원하는 첫 번째 릴리스 |
8.0.9 | 2014-06-25 | 8.0 계열 첫 번째 안정 버전[41] |
8.0.53 | 2018-07-05 | 8.0 계열 최종 버전[42] |
8.5.3 | 2016-06-13 | 8.5 계열 첫 번째 안정 버전 |
8.5.100 | 2024-03-25 | 8.5 계열 최종 버전[43] |
9.0.1 beta | 2017-09-30 | Servlet 4.0 사양을 지원하는 첫 번째 릴리스 |
9.0.4 | 2018-03-14 | 9.0 계열 첫 번째 안정 버전 |
9.0.98 | 2024-12-09 | 9.0 계열 최신 버전 |
10.0.0 beta | 2020-12-08 | Servlet 5.0, JSP 3.0, EL 4.0, WebSocket 2.0, 인증 2.0 사양을 지원하는 첫 번째 릴리스 |
10.0.2 | 2021-02-02 | 10.0 계열 첫 번째 안정 버전 |
10.0.27 | 2022-10-10 | 10.0 계열 최종 버전[44] |
10.1.0 beta | 2022-06-09 | Servlet 6.0, JSP 3.1, EL 5.0, WebSocket 2.1, 인증 3.0 사양을 지원하는 첫 번째 릴리스 |
10.1.0 | 2021-09-26 | 10.1 계열 첫 번째 안정 버전 |
10.1.34 | 2024-12-09 | 10.1 계열 최신 버전 |
11.0.0 beta | 2024-07-05 | Servlet 6.1, JSP 4.0 사양을 지원하는 첫 번째 릴리스 |
11.0.0 | 2024-10-09 | 11.0 계열 첫 번째 안정 버전 |
11.0.2 | 2024-12-09 | 11.0 계열 최신 버전 |
4. 1. 주요 버전별 지원 사양
5. 역사
톰캣은 썬 마이크로시스템즈의 소프트웨어 아키텍트였던 제임스 던컨 데이비슨이 만든 참조 구현에서 시작되었다.[6] 그는 나중에 이 프로젝트를 오픈 소스로 만드는 데 기여했으며, 썬 마이크로시스템즈가 이 프로젝트를 아파치 소프트웨어 재단에 기증하는 데 중요한 역할을 했다.[6] 아파치 앤트는 톰캣을 오픈 소스 프로젝트로 만들면서 파생되어 개발된 소프트웨어 빌드 자동화 도구이다.
데이비슨은 처음에 이 프로젝트가 오픈 소스가 되기를 바랐고, 많은 오픈 소스 프로젝트가 표지에 동물이 그려진 오라일리 책과 관련되어 있었기 때문에 이 프로젝트의 이름을 동물에서 따오고 싶어했다. 그는 "톰고양이(Tomcat)"라는 이름을 생각해 냈는데, 그 동물 자체가 스스로를 보호할 수 있는 무언가를 나타낸다고 생각했기 때문이다.[7]
6. Apache TomEE
아파치 톰EE(발음: "토미")는 아파치 오픈EJB, 아파치 오픈웹빈스, 아파치 오픈JPA, 아파치 마이페이스 등 여러 자바 엔터프라이즈 프로젝트를 결합한 아파치 톰캣의 엔터프라이즈 에디션이다. (톰캣 + 자바/자카르타 EE = 톰EE)[31] 2011년 10월, 이 프로젝트는 오라클로부터 Java EE 6 웹 프로파일 호환 구현으로 인증을 받았다.[32][33]
참조
[1]
웹사이트
Apache Tomcat Configuration Reference - The Realm Component
http://tomcat.apache[...]
Tomcat.apache.org
2013-11-01
[2]
웹사이트
The Coyote HTTP/1.1 Connector
http://tomcat.apache[...]
Apache
[3]
웹사이트
Server Configuration Reference - The Coyote JK Connector
http://tomcat.apache[...]
2018-08-24
[4]
웹사이트
High availability Tomcat
https://www.infoworl[...]
2020-07-21
[5]
웹사이트
Apache Tomcat Versions
http://tomcat.apache[...]
2024-10-27
[6]
웹사이트
What was the history of Tomcat inside Sun before it was open-sourced?
https://www.quora.co[...]
2018-07-25
[7]
서적
UML in a Nutshell
https://archive.org/[...]
O'Reilly Books
[8]
서적
Tomcat: The Definitive Guide
https://archive.org/[...]
O'Reilly Media
2018-03-01
[9]
웹사이트
Apache Tomcat Versions
https://tomcat.apach[...]
[10]
웹사이트
Tomcat Versions - Apache Tomcat
https://cwiki.apache[...]
The Apache Software Foundation
2020-07-20
[11]
웹사이트
The Origin Story of Tomcat
http://technotif.com[...]
TechNotif
2017-07-23
[12]
웹사이트
'[ANNOUNCEMENT] Tomcat 4.1.10 Stable'
http://mail-archives[...]
2015-09-21
[13]
웹사이트
Apache Tomcat - Which Version Do I Want?
https://tomcat.apach[...]
2018-08-24
[14]
웹사이트
Apache Tomcat
http://tomcat.apache[...]
2015-09-21
[15]
웹사이트
The Jakarta Site - News and Status
http://jakarta.apach[...]
2015-09-21
[16]
웹사이트
Apache Tomcat
https://tomcat.apach[...]
2022-03-28
[17]
웹사이트
'[ANN] Apache Tomcat 6.0.10 released'
http://mail-archives[...]
2015-09-21
[18]
웹사이트
Apache Tomcat - End of life for Apache Tomcat 6.0.x
https://tomcat.apach[...]
2020-07-20
[19]
웹사이트
Apache Tomcat
http://tomcat.apache[...]
2015-09-21
[20]
웹사이트
Apache Tomcat 7 (7.0.109) - Changelog
https://tomcat.apach[...]
2021-06-17
[21]
웹사이트
Apache Tomcat - End of life for Apache Tomcat 7.0.x
http://tomcat.apache[...]
2020-07-20
[22]
웹사이트
Apache Tomcat
http://tomcat.apache[...]
2015-10-05
[23]
웹사이트
Apache Tomcat - End of life for Apache Tomcat 8.0.x
https://tomcat.apach[...]
2020-07-20
[24]
웹사이트
Apache Tomcat 8.5 Changelog
https://tomcat.apach[...]
2024-04-07
[25]
웹사이트
Apache Tomcat - End of life for Apache Tomcat 8.5.x
https://tomcat.apach[...]
2023-10-16
[26]
웹사이트
Apache Tomcat 9.0 Changelog
https://tomcat.apach[...]
2024-11-15
[27]
웹사이트
Apache Tomcat 10.0 Changelog
https://tomcat.apach[...]
2023-05-09
[28]
웹사이트
Apache Tomcat - End of life for Apache Tomcat 10.0.x
https://tomcat.apach[...]
2022-11-17
[29]
웹사이트
Apache Tomcat 10.1 Changelog
https://tomcat.apach[...]
2024-11-15
[30]
웹사이트
Apache Tomcat 11.0 Changelog
https://tomcat.apach[...]
2024-11-15
[31]
웹사이트
Apache TomEE
http://openejb.apach[...]
Apache OpenEJB
[32]
웹사이트
The Apache Software Foundation Announces Apache TomEE Certified as Java EE 6 Web Profile Compatible
http://www.marketwat[...]
MarketWatch
2011-10-04
[33]
웹사이트
Apache TomEE Web stack gains approval
http://www.infoworld[...]
InfoWorld
2011-10-07
[34]
웹사이트
The Jakarta Site - News & Status - 2005 Oct-Dec
https://jakarta.apac[...]
2013-07-09
[35]
웹사이트
Apache Tomcat Versions
https://tomcat.apach[...]
2021-02-08
[36]
웹사이트
Apache Tomcat® - End of life for Apache Tomcat 5.5.x
https://tomcat.apach[...]
[37]
웹사이트
ANN Apache Tomcat 6.0.10 released
http://mail-archives[...]
[38]
웹사이트
Apache Tomcat® - End of life for Apache Tomcat 6.0.x
https://tomcat.apach[...]
[39]
뉴스
Apache Tomcat - Old news! - 2011
http://tomcat.apache[...]
[40]
웹사이트
Apache Tomcat® - End of life for Apache Tomcat 7.0.x
https://tomcat.apach[...]
[41]
웹사이트
Apache Tomcat - Old news!
https://tomcat.apach[...]
2014-09-05
[42]
웹사이트
Apache Tomcat® - End of life for Apache Tomcat 8.0.x
https://tomcat.apach[...]
[43]
웹사이트
Apache Tomcat® - End of life for Apache Tomcat 8.5.x
https://tomcat.apach[...]
[44]
웹사이트
Apache Tomcat® - End of life for Apache Tomcat 10.0.x
https://tomcat.apach[...]
관련 사건 타임라인
( 최근 20개의 뉴스만 표기 됩니다. )
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com